package com.ruoyi.web.controller.yiqingDetails;


import com.ruoyi.web.domain.Region;
import com.ruoyi.web.service.yiqingDetailsService.RegionService;
import com.ruoyi.web.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController()
//在路径前加/yiqingfuwu，避免被ruoyi框架自带的拦截器判断token
//@RequestMapping("/yiqingfuwu")
public class RegionController {

    @Autowired
    RegionService regionService;

    /**
     * 根据传入的id查询到指定的区域信息
     * @param id
     * @return
     */
    @GetMapping("/regionbyid/{id}")
    public R getRegionById(@PathVariable("id") Integer id) {
        System.out.println(id);

        //查询得到数据
        Region one = regionService.lambdaQuery().eq(Region::getId, id).one();

        //封装到R类中
        R<Region> success = R.ok(one);
        return success;

    }

    /**
     * 获得当前区域内的所有区市
     * @param pid
     * @return
     */
    @GetMapping("/innerregionbypid/{pid}")
    public R getInnerRegionById(@PathVariable("pid") Integer pid){

        return R.ok(regionService.getAreaList(pid));
    }

    /**
     * 通过指定区域名，获取指定区域内的区域数据
     * 省名   --->     省内市
     * 市名   --->     市内区
     * 区名   --->     查询错误
     * @param name
     * @return
     */
    @GetMapping("/inerareabyname/{name}")
    public R getInerAreaByName(@PathVariable("name") String name){

        Region one = null;

        //查询指定名称的区域
        try{
            one = regionService.lambdaQuery().likeRight(Region::getName, name).one();
        }catch (Exception e){
            return R.error("查询条件不具体，查询到多条数据");
        }

        if(one == null){
            return R.error("未查询到指定区域");
        }

        //使用指定区域的id查询内部区域列表
        List<Region> list = regionService.lambdaQuery().eq(Region::getParentId, one.getId()).list();

        if(list.toArray().length == 0){
            return R.error("未查询到下级列表");
        }

        return R.ok(list);
    }


}
